This page is a quick reference checkpoint for LAST VALUE in SQL Server: behavior, syntax rules, edge cases, and a minimal example; plus the official vendor documentation.
LAST_VALUE returns the last value in the window frame.
Returns the last value in the window frame; default frame is RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW, which often produces non-intuitive results unless an explicit frame is specified.
If this behavior feels unintuitive, the tutorial below explains the underlying pattern step-by-step.
LAST_VALUE(expression) OVER ( [ PARTITION BY ... ] ORDER BY ... [ ROWS/RANGE frame_clause ] )
SELECT department, salary, LAST_VALUE(salary) OVER (PARTITION BY department ORDER BY salary ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS last_salary FROM employees;
If you came here to confirm syntax, you’re done. If you came here to get better at window functions, choose your next step.
LAST VALUE is part of a bigger window-function pattern. If you want the “why”, start here: First Last Nth Value
For the authoritative spec, use the vendor docs. This page is the fast “sanity check”.
View SQL Server Documentation →Looking for more functions across all SQL dialects? Visit the full SQL Dialects & Window Functions Documentation.